﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Modelo;
using System.Data.SqlClient;
namespace BaseDatos
{
    public static class BDLote
    {
        private static string conexionCentral = "Data Source=.\\sqlexpress; Initial Catalog=FarmaciaAurora; Integrated Security=true";
        private static string conexionSucursal1 = "Data Source=.\\sqlexpress; Initial Catalog=FarmaciaAuroraSucursal; Integrated Security=true";
        private static string conexionSucursal2 = "Data Source=.\\sqlexpress; Initial Catalog=FarmaciaAuroraSucursal2; Integrated Security=true";

        public static Lote BuscarLotePor(long idLote)
        {
            SqlConnection sql = null;
            Lote lot = null;
            try
            {
                sql = new SqlConnection(conexionCentral);
                SqlCommand comando = sql.CreateCommand();
                comando.CommandText = "SELECT * FROM Lote where IdLote=@idLote";
                comando.Parameters.AddWithValue("idLote", idLote);
                sql.Open();
                SqlDataReader reader = comando.ExecuteReader();
                if (reader.Read())
                {
                    lot.Agotado = (bool)reader["Agotado"];
                    lot.Caducado = (bool)reader["Caducado"];
                    lot.Cantidad = int.Parse(reader["Cantidad"].ToString());
                    lot.FechaElaboracion = DateTime.Parse(reader["FechaElaboracion"].ToString());
                    lot.FechaVencimiento = DateTime.Parse(reader["FechaVencimiento"].ToString());
                    lot.IdLote = long.Parse(reader["IdLote"].ToString());
                }

            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                if (sql != null)
                    sql.Dispose();
            }
            return lot;
        }
        public static Lote insertarNuevoLote(Lote lote)
        {
            SqlConnection sql = null;
            Lote lot = null;
            try
            {
                sql = new SqlConnection(conexionCentral);
                SqlCommand comando = sql.CreateCommand();
                comando.CommandText = "INSERT INTO Lote (FechaVencimiento,Agotado,Caducado,Cantidad,FechaElaboracion) values(@fechaVencimiento,@agotado,@caducado,@cantidad,@fechaElaboracion) SELECT SCOPE_IDENTITY() as Num";
                comando.Parameters.AddWithValue("fechaVencimiento",lote.FechaVencimiento);
                comando.Parameters.AddWithValue("agotado",lote.Agotado);
                comando.Parameters.AddWithValue("caducado",lote.Caducado);
                comando.Parameters.AddWithValue("cantidad",lote.Cantidad);
                comando.Parameters.AddWithValue("fechaElaboracion",lote.FechaElaboracion);
                sql.Open();
                SqlDataReader reader = comando.ExecuteReader();
                if (reader.Read())
                {
                    lote.IdLote = long.Parse(reader["num"].ToString());
                }
                
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                if (sql != null)
                    sql.Dispose();
            }
            return lote;
        }
        public static List<Lote> obtenerTodosLosLotes()
        {
            SqlConnection sql = null;
            List<Lote> lotes = null;
            try
            {
                sql = new SqlConnection(conexionCentral);
                
                SqlCommand comando = sql.CreateCommand();
                comando.CommandText = "SELECT * FROM Lote ORDER BY FechaVencimiento";
                sql.Open();
                SqlDataReader reader = comando.ExecuteReader();
                lotes = new List<Lote>();
                while (reader.HasRows)
                {
                    Lote lote = new Lote();
                    lote.Agotado = (bool)reader["Agotado"];
                    lote.Caducado = (bool)reader["Caducado"];
                    lote.FechaElaboracion = DateTime.Parse(reader["FechaDeElaboracion"].ToString());
                    lote.FechaVencimiento = DateTime.Parse(reader["FechaDeVencimiento"].ToString());
                    lote.IdLote = long.Parse(reader["IdLote"].ToString());
                    lotes.Add(lote);
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                if (sql != null)
                    sql.Dispose();
            }
            return lotes;
        }
    }

}
